package org.example.model;

import lombok.*;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @Author: Ran
 * @Date: 2021/9/22
 **/
@Data
public class SimStdPlan {
    /**
     * 商家编号
     */
    private String sellerNo;

    /**
     * 商家名称
     */
    private String sellerName;

    /**
     * 事业部编码
     */
    private String deptNo;

    /**
     * 事业部名称
     */
    private String deptName;

    /**
     * 使用枚举StdPlanTypeEnum
     * 类型：1指标模拟（正向）2参数推荐（逆向）
     */
    private Integer type;

    /**
     * 模式 0-正常plan  1-逆向应用正向plan
     */
    private Integer mode;

    /**
     * 任务名称
     */
    private String taskName;

    /**
     * 使用枚举StdPlanTaskTypeEnum
     * 任务类型 1 全局指标模拟 2 局部指标模拟
     */
    private Integer taskType;

    /**
     * 模拟开始时间
     */
    private Date startDate;

    /**
     * 模拟结束时间
     */
    private Date endDate;

    /**
     * 模拟开始时间
     */
    private Date idxStartDate;

    /**
     * 模拟结束时间
     */
    private Date idxEndDate;

    /**
     * 约束目标设置1周转最优 2服务水平最优
     */
    private Integer constraintTargetType;

    /**
     * 服务水平约束 1：件数满足率% 2 订单行满足率 3 订单满足率
     */
    private Integer constraintSl;

    /**
     * 服务水平约束值
     */
    private BigDecimal constraintSlValue;

    /**
     * 周转约束 1金额类-年金额周转率(次) 2金额类-金额周转天(天)3数量类-数量周转天(天)4数量类-年数量周转率(次)
     */
    private Integer constraintTurnover;

    /**
     * 周转约束值
     */
    private Integer constraintTurnoverValue;

    /**
     * 当task_type=2 时，约束详情设置类型：1 商品等级+仓 2 品类+仓 3 sku +仓 4 商品等级 +全国
     */
    private Integer constraintDetailType;

    /**
     * 波动系数（正向）
     */
    private BigDecimal bufferRate;

    /**
     * 启用订单支源 0不启用 1启用（正向）
     */
    private Integer enableOrdeSourceFinding;

    /**
     * 使用枚举StdPlanStatusEnum
     * 任务状态0 草稿1 执行中2 执行完成3 执行失败
     */
    private Integer status;

    /**
     * 0 不开启 1 开启  快速仿真模式
     */
    private Integer simulationMode;

    /**
     * 是否覆盖默认 k bp， 0 不覆盖 1 覆盖
     */
    private Integer overwriteKBp;

    /**
     * 0 全国， 1单仓
     */
    private Integer constraintDetailBandType;

    /**
     * 自动填补初期0库存 0开启  1 关闭
     */
    private Integer fillInventoryType;

    /**
     * 子计划的序号
     */
    private Integer subIndex;

    /**
     * 子计划的父id
     */
    private String parentId;

    /**
     * 二分逼近调整K的次数
     */
    private Integer binaryApproachKCounts;

    /**
     * 二分逼近调整BP的次数
     */
    private Integer binaryApproachBpCounts;

    /**
     * 二分逼近调整的次数
     */
    private Integer binaryApproachCounts;

    /**
     * 策略配置参数 1100111 应用转换
     */
    private String strategyOptions;

}